package com.doitedu.day06

/**
 * @Date: 22.6.26 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 */
object _06泛型示例 {


  def max(x: Int, y: Int): Int = {
    if (x > y) x else y
  }

  def max(x: Double, y: Double): Double = {
    if (x > y) x else y
  }

  // 方法类型是指定死
  def max(x: String, y: String): String = {
    if (x > y) x else y
  }

/*  implicit def OrderedUser(user: User): Ordered[User] = {
    new Ordered[User] {
      override def compare(that: User): Int = {
        user.age - that.age
      }
    }
  }*/

  // 可以比较大小的两个参数
  // 可排序的一定可以比较的
  // 上界: 泛型是Ordered子类
  def max[T <: Ordered[T]](x: T, y: T): T = {
    if (x > y) x else y
  }

  def operatorsAnimal[T <: Animal](x:T): Unit ={
    println(x)
  }
 //植物
  def operatorsPlant[T <: Plant](x:T): Unit ={
    println(x)
  }

  def operators[T](x:T): Unit ={
    println(x)
  }

  def main(args: Array[String]): Unit = {

  //  operatorsAnimal(new MeiGui)
   // operatorsPlant()
    operators(new Dog)
    operators(new MeiGui)

    // 在运行时  判断是否符合要求
/*    max[User](new User(1, "zss", 23),
      new User(2, "lss", 33))*/


  }
}
